////////////////////////////////////////////////////////////////////////////////
//
//  ADOBE SYSTEMS INCORPORATED
//  Copyright 2005-2006 Adobe Systems Incorporated
//  All Rights Reserved.
//
//  NOTICE: Adobe permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
package as3isolib.core
{
	/**
	 * The IFactory interface defines the interface that factory classes such as ClassFactory must implement.
	 * An object of type IFactory is a "factory object" which Flex uses to generate multiple instances of another class,
	 * each with identical properties. 
	 * 
	 * This is an exact duplicate of mx.core.IFactory located in the Flex SDK by Adobe.
	 */
	public interface IFactory
	{
		/**
		 * Creates an instance of some class (determined by the class that implements IFactory).
		 */
		function newInstance ():*;
		
		/**
		 * @private
		 */
		function get properties ():Object;
		
		/**
		 *	An Object whose name/value pairs specify the properties to be set
		 *  on each object generated by the <code>newInstance()</code> method.
		 *
		 *  <p>For example, if you set <code>properties</code> to
		 *  <code>{ text: "Hello", width: 100 }</code>, then every instance
		 *  of the <code>generator</code> class that is generated by calling
		 *  <code>newInstance()</code> will have its <code>text</code> set to
		 *  <code>"Hello"</code> and its <code>width</code> set to
		 *  <code>100</code>.</p>
		 *
		 *  @default null
		 */
		function set properties (value:Object):void;
	}
}